package com.study.csc.mythreadtest.test4case1;

import java.text.DecimalFormat;
import java.util.Random;

/**
 * @author csc
 * @Date 2023/10/23 11:27
 * @PackageName:com.study.csc.mythreadtest.test4case1
 * @ClassName: MyThread
 * @Description: TODO
 * @Version 1.0
 */
public class MyThread  extends  Thread{

    //共享数据
    //100块钱,分成了3个包
    static double money = 100;
    static int count = 3;

    //最小的中奖金额
    static final double MIN = 0.01;

    @Override
    public void run() {
        //同步代码块
        synchronized (MyThread.class){
            if(count == 0){
                System.out.println(getName()+"没有抢到红包!!!");
            }else{
                //判断,共享数据是否到了末尾(没有末尾)
                //定义一个变量,表示中奖的金额
                double prize = 0;
                if(count == 1){
                    //表示此时是最后一个红包
                    //就无需随机,剩余所有的钱都是中奖金额
                    prize = money;
                }else{
                    //表示第一次,第二次(随机)
                    Random r = new Random();
                    //100 - (3-1) * 0.01. 这里需要防止随机数直接生成最大的值
                    //红包一共有100 分成三个 你第一次就生成个100的红包 那没法玩了,后面抽不到了
                    double bounds = money-2*MIN;
                    prize = r.nextDouble() *bounds;
                    if(prize<MIN){
                        prize = MIN;
                    }
                }
                DecimalFormat df = new DecimalFormat("#.00");
                //从money当中,去掉 当前中奖的金额
                money = money - prize;
                //红包的个数-1
                count--;
                //本次红包的信息进行打印
                System.out.println(getName()+"抢到了"+ df.format(prize)+"元");
            }
        }
    }
}
